import Vue from 'vue'
import Vuex from 'vuex'
import createLoadingPlugin from '@/utils/vuex-loading'
import user from "./modules/user"

Vue.use(Vuex);

const files = require.context('./modules', false, /\.js$/);
const modules = {};

files.keys().forEach(key => {
    modules[key.replace(/(\.\/|\.js)/g, '')] = files(key).default
});

export default new Vuex.Store({
    // Vuex插件
    plugins: [createLoadingPlugin()],
    //state定义的这个对象的状态
    state: {
        direction: 'forward' // 页面切换方向
    },
    // getters计算属性
    getters: {
        userData (state) {
            return state.user.user;
        },
        usertoken(state){
            return state.user.token;
        }

    },
    //mutations更改store中state状态的唯一方法
    mutations: {
        // 更新页面切换方向
        updateDirection (state, direction) {
            state.direction = direction
        }
    },
    // action可以提交mutation，在action中可以执行store.commi
    //而且action中可以有任何的异步操作。在页面中如果我们要嗲用这个action，则需要执行store.dispatch
    actions: {

    },
    // module其实只是解决了当state中很复杂臃肿的时候
    //module可以将store分割成模块，每个模块中拥有自己的state、mutation、action和getter。
    modules:{
        user:user

    }
})
